//package com.jiema.human.utils;
//
//
//import com.ak.kaoyan.entity.FaceApiSetting;
//import com.ak.kaoyan.entity.GetToken;
//import com.alibaba.fastjson.JSONObject;
//import com.google.gson.Gson;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.stereotype.Component;
//import org.springframework.web.multipart.MultipartFile;
//
//import java.io.IOException;
//import java.util.HashMap;
//import java.util.Map;
//import java.util.regex.Matcher;
//import java.util.regex.Pattern;
//
//@Slf4j
//@Component
//public class FaceApi {
//
//    // 获取 token
//    private static String token = GetToken.getAuth();
//
//    /**
//     * 人脸注册
//     */
//    public Map FaceAdd(FaceApiSetting faceaddseting,MultipartFile file)  {
//
//        String url = "https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/add";
//        Map resultmap = null;
//        try {
//            resultmap = FaceAddAndUpdate(faceaddseting, url,file);
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//        return resultmap;
//
//    }
//
//    /**
//     * 人脸更新
//     * @param faceaddseting 参数设置
//     * @return 返回信息map
//     * @throws IOException
//     */
//    public Map FaceUpdate(FaceApiSetting faceaddseting,MultipartFile file) {
//        String url = "https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/update";
//        Map resultmap = null;
//        try {
//            resultmap = FaceAddAndUpdate(faceaddseting, url,file);
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//        return resultmap;
//    }
//
//    /**
//     * 用户信息的设置
//     * @param facaddseting
//     * @param url
//     * @return
//     * @throws IOException
//     */
//    private Map FaceAddAndUpdate(FaceApiSetting facaddseting, String url,MultipartFile file) throws IOException {
//
//        Map<String, Object> map=new HashMap<>();
//        try {
//            byte[] bytes = file.getBytes();
//            String imagebase64 = Base64Util.encode(bytes);
//            map.put("image", imagebase64);
//            map.put("group_id", facaddseting.getGroupID());
//            map.put("user_id", facaddseting.getUserID());
//            map.put("liveness_control", facaddseting.getLiveness_Control());
//            map.put("image_type", facaddseting.getImage_Type());
//            map.put("quality_control", facaddseting.getQuality_Control());
//            //
//            Gson gson=new Gson();
//            String param = gson.toJson(map);
//            String result = HttpUtil.post(url, token, "application/json", param);
//            Map<String,Object> resultmap = gson.fromJson(result, Map.class);
//            return resultmap;
//        } catch (Exception e) {
//            log.info("失败");
//            e.printStackTrace();
//        }
//        return null;
//    }
//
//    /**
//     * 查询这个人的面部信息
//     * @param apiSetting
//     * @return map
//     */
//    public Map<String, Object> FindPersonFaceList(FaceApiSetting apiSetting){
//        String url="https://aip.baidubce.com/rest/2.0/face/v3/faceset/face/getlist";
//        Map<String, Object> map=new HashMap<>();
//        if(!map.isEmpty()){
//            map.clear();
//        }
//        map.put("group_id", apiSetting.getGroupID());
//        map.put("user_id", apiSetting.getUserID());
//        Gson gson=new Gson();
//        String param = gson.toJson(map);
//
//        try {
//            String result = HttpUtil.post(url, token, "application/json", param);
//            Map<String, Object> resultmap = gson.fromJson(result, Map.class);
//            return resultmap;
//        } catch (Exception e) {
//            log.info("查询失败");
//            e.printStackTrace();
//        }
//        return null;
//    }
//
//    /**
//     * 查询本组的面部信息
//     * @param apiSetting
//     * @return
//     */
//    public Map<String, Object> FindGroupList(FaceApiSetting apiSetting) {
//        String url = "https://aip.baidubce.com/rest/2.0/face/v3/faceset/group/getusers";
//        Map<String, Object> map=new HashMap<>();
//        map.put("group_id", apiSetting.getGroupID());
//        Gson gson=new Gson();
//        String param = gson.toJson(map);
//        try {
//            String result = HttpUtil.post(url, token, "application/json", param);
//            Map<String, Object> resultmap = gson.fromJson(result, Map.class);
//            return resultmap;
//
//        } catch (Exception e) {
//            log.info("未查询到人脸信息");
//            e.printStackTrace();
//        }
//        return null;
//    }
//
//    /**
//     * 人脸删除
//     * @param apiSetting
//     * @return
//     */
//    public Map<String, Object> DelPersonFace(FaceApiSetting apiSetting){
//        String url="https://aip.baidubce.com/rest/2.0/face/v3/faceset/face/delete";
//        Map<String, Object> map = FindPersonFaceList(apiSetting);
//        Object result = map.get("result");
//        Gson gson=new Gson();
//        String s = gson.toJson(result);
//        JSONObject jsonObject = JSONObject.parseObject(s);
//        String face_token = jsonObject.getString("face_list");
//        String substring = face_token.substring(2, face_token.length() - 2);
//        String[] split = substring.split("\"");
//        face_token=split[7];
//        log.info(face_token);
//        map.put("group_id", apiSetting.getGroupID());
//        map.put("user_id", apiSetting.getUserID());
//        map.put("face_token",face_token);
//        String param = gson.toJson(map);
//        try {
//            String result2 = HttpUtil.post(url, token, "application/json", param);
//            Map resultmap = gson.fromJson(result2, Map.class);
//            return resultmap;
//        } catch (Exception e) {
//            log.info("删除失败");
//            e.printStackTrace();
//        }
//        return null;
//    }
//
//    /**
//     * 人脸查找
//     * @return
//     */
//    public Map<String, Object> FaceSearch(FaceApiSetting apiSetting, MultipartFile file) {
//
//        try {
//            String url = "https://aip.baidubce.com/rest/2.0/face/v3/search";
//            byte[] bytes = file.getBytes();
//            String imagebase64 = Base64Util.encode(bytes);
//            Map<String, Object> map = new HashMap<>();
//            map.put("image", imagebase64);
//
//            map.put("liveness_control", apiSetting.getLiveness_Control());
//            map.put("group_id_list", apiSetting.getGroupID());
//            map.put("image_type", apiSetting.getImage_Type());
//            map.put("quality_control", apiSetting.getQuality_Control());
//            Gson gson=new Gson();
//            String param = gson.toJson(map);
//            String result = HttpUtil.post(url, token, "application/json", param);
//
//            Map<String, Object> resultmaps = gson.fromJson(result, Map.class);
//            log.info("返回的错误代码"+resultmaps.get("error_code"));
//
//            if(!resultmaps.get("error_code").toString().equals("222202.0")||!resultmaps.get("error_code").toString().equals("222203.0")){
//                String resultlist = resultmaps.get("result").toString();
//                String substring = resultlist.substring(1, resultlist.length() - 1);
//                String regEx="[\n`~!@#$%^&*()+|{}':;'\\[\\].<>/?~！@#￥%……&*（）——+|{}【】‘；：”“’。， 、？]";
//                String aa = "";
//                Pattern p = Pattern.compile(regEx);
//                Matcher m = p.matcher(substring);//这里把想要替换的字符串传进来
//                String newString = m.replaceAll(aa).trim();
//                String[] split = newString.split(",");
//                split[1]=split[1].substring(10, split[1].length());
//                String face_token=split[0].substring(11,split[0].length());
//                String group_id=split[1].substring(9,split[1].length());
//                String user_id=split[2].substring(8,split[2].length());
//                String user_info=split[3].substring(10,split[3].length());
//                String score=split[4].substring(6,split[4].length());
//                log.info(face_token);
//                resultmaps.put("face_token",face_token);
//                resultmaps.put("group_id",group_id);
//                resultmaps.put("user_id",user_id);
//                resultmaps.put("user_info",user_info);
//                resultmaps.put("score",score);
//                return resultmaps;
//            }else {
//                log.info("失败分支");
//                return resultmaps;
//            }
//
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//        return null;
//    }
//
//}
